Creating a computer macro

ABSTRACT

A method for creating a computer macro, the computer macro being executed on a computer, the computer including a processor, a display screen, a peripheral device, and a memory accessible by the processor, peripheral device, the method comprising: detecting, by a computer driver being at least partially resident in the memory, a computer program being at least partially resident in the memory to be executed in the computer; assigning, by the computer driver, at least one computer macro relating to the detected computer program to a key and/or button on the peripheral device; assigning, by the computer driver, a computer macro symbol relating to the assigned computer macro; storing, in the memory, the computer macro, the key and/or button on the peripheral device assigned to the computer macro and/or the assigned computer macro symbol; displaying, on the display screen via the computer driver, an on-screen-display, OSD, wherein the OSD is configured to display the assigned stored computer macro symbol and a reference relating to the stored key and/or button on the peripheral device to which the assigned stored computer macro has been assigned; and executing, by the processor, the stored computer macro assigned to the stored computer macro in the computer program when the stored key and/or button on the peripheral device is actuated.

RELATED APPLICATIONS

The present invention is a U.S. Nonprovisional Patent Applicationclaiming priority to European Patent Application No. 21211259.3, filedon Nov. 30, 2021; the entirety of which is hereby incorporated herein byreference.

TECHNICAL FIELD

The present solution generally relates to method for creating a computermacro. The method comprises the steps of: detecting a computer program;assigning at least one computer macro relating to the computer programto a key and/or button on a peripheral device; assigning a computermacro symbol relating to the computer macro; storing the key and/orbutton to which the computer macro and/or computer macro symbol has beenassigned to; displaying the computer macro symbol and a reference to thekey and/or button on an on-screen display; and executing the computermacro relating to the computer program when the key and/or button isactuated.

The present solution is defined in the claims. Relevant details are alsoto be found in the description and the drawings.

TECHNICAL BACKGROUND

WO 2015/200537 A2 discloses executing a computer program when a regionof a touch-sensitive surface associated with a set of functionalities iscontacted and, dependent on the context of the user interface at thetime of contact, executing a function.

US 2004/243639 A1 discloses creating a task to be automaticallyperformed on a computer by designating an executable function as thesubject of a task, designating a trigger for the task that executes thefunction, designating a notification for the task when the task has beencompleted and associating the function, the trigger and the notificationwith a file in order to add behavior to the file by not modifying thefile.

US 2013/173896 A1 discloses a method for generating a plurality oflayout objects from first APIs in a source specification, collectingcustomization instructions in a customization object via second APIs,wherein each customization instruction includes predictates indicatingapplicability of the customization instruction, generating apresentation including the layout objects in response to an event,selectively applying the customization instructions from thecustomization object on the layout objects of the presentation to updatethe presentation according to the pre-dictates and displaying theupdated presentation.

Furthermore, on a standard keyboard, function keys “F1” to “F12”maintain their macros independent of the computer program a user isusing at that present moment. For example, “F1” opens the help/supportwindow for the computer program, “F5” refreshes a web page, “F7” opens aspelling and grammar box in Microsoft Office programs and so on. Thereis not a possibility to alter the computer macros based on a user'spreference nor alter the computer macro associated with a function keybased on the computer program being used by the user.

SUMMARY

The present solution is set out in the independent claims. Preferredembodiments are outlined in the dependent claims.

According to a first aspect, a method for creating a computer macro isdisclosed, the computer macro being executed on a computer, the computerincluding a processor, a display screen, a peripheral device, and amemory accessible by the processor. The method comprises detecting, by acomputer driver being at least partially resident in the memory, acomputer program being at least partially resident in the memory to beexecuted in the computer. The method further comprises assigning, by thecomputer driver, at least one computer macro relating to the detectedcomputer program to a key and/or button on the peripheral device. Themethod further comprises assigning, by the computer driver, a computermacro symbol relating to the assigned computer macro. The method furthercomprises storing, in the memory, the computer macro, the key and/orbutton on the peripheral device assigned to the computer macro and/orthe assigned computer macro symbol. The method further comprisesdisplaying, on the display screen via the computer driver, anon-screen-display, OSD, wherein the OSD is configured to display theassigned stored computer macro symbol and a reference relating to thestored key and/or button on the peripheral device to which the assignedstored computer macro has been assigned. The method further comprisesexecuting, by the processor, the stored computer macro assigned to thestored computer macro in the computer program when the stored key and/orbutton on the peripheral device is actuated.

A computer macro as used and understood herein stands for“macroinstruction” and is a programmable input command pattern whichtranslates an activation of a specific key into a preset sequence ofoutput (commands). Such macros make tasks less repetitive byrepresenting a (complicated) sequence of keystrokes, mouse movements,commands, etc. which are executed by a single key stroke of the macrokey.

A computer driver as used and understood herein is software that allowsa computer to communicate with an internal or external computer hardwaredevice, e.g. a peripheral device. Without drivers, the devices connectedto the computer—for example, a mouse or external keyboard— will not workproperly.

The present proposal allows for creating and customizing a computermacro based on a detected computer program, displaying a computer macrosymbol associated with the computer macro and displaying a referencerelating to the key and/or button on a peripheral device to which thecomputer macro has been assigned. This may result in a more efficientuse of a computer program for a user due to the ability to create andcustomize computer macros based on the computer program being used andthe easy readability of the keys to which the computer macros have beenassigned, via a display screen.

The computer may be a laptop, a tablet computer, a desktop computer, amobile phone or any other type of computer. The computer isWindows-based and/or Apple-based and/or Linux-based and/or based on anyother suitable type of operating system. The processor may be configuredto execute instructions stored in the memory. The display screen may bea commercially available display screen or a bespoke display screen. Theperipheral device may be a commercially available peripheral device.Preferably, it is a bespoke peripheral device having dedicated macrokeys as described herein.

A peripheral device as used and understood herein may refer to anauxiliary device coupled to a computer, such as a keyboard, a numerickeypad, a mouse, a bespoke peripheral device, a controller, a touchpad,a trackball, a joystick or any other suitable peripheral device.Throughout the present disclosure, any references made to a keyboardand/or a numeric keypad may be understood as referring to any othersuitable peripheral device. The methods and systems described herein inrelation to a keyboard and/or numeric keypad may also relate to anyother suitable peripheral device, as described above. Throughout thispresent disclosure, a reference to a key on a peripheral device may alsoapply to a button on a peripheral device and vice versa.

In some examples, the computer driver is stored by the memory. Thecomputer driver may be preinstalled on the memory or may bedownloadable, and then storable by the memory, from the internet and/orfrom a USB stick and/or from a compact disk.

The computer program to be detected may be any program that isexecutable by the processor and/or a secondary processor of thecomputer. The computer program may be a file editor and/or acomputer-aided drawing, CAD, program and/or an internet browser and/or avideo game and/or a computer repair tool and/or any program executableby a processor on a computer.

The computer macro may be any suitable macro for the detected program.In a non-limiting example, in a file editor, a computer macro may be atext alignment, a bolding of a text element, a italicizing of a textelement, an underlining of a text element, a highlighting of a textelement or any other suitable macro. In a CAD program, the computermacro may be a selection of a line tool, a change of viewingperspective, a selection of a different page, a filling in of anelement, a chamfering of an element or any other suitable macro. In someexamples, a plurality of computer macros are assigned by the computerdriver.

In some examples, the computer macro may change based on the programdetected by the computer driver. In some examples, the computer macromay change based on the program which is in focus on the computer i.e.based on the computer program currently being used by a user. In anon-limiting example, if a file editor and a CAD program are both openon a computer at the same time, the computer macro may be a firstcomputer macro when the file editor is being used by a user and thecomputer macro may be a second computer macro when the CAD program isbeing used by a user.

The computer macro symbol may be a symbol which is used to signify thecomputer macro. In a non-limiting example, if the computer macro is fora bolding of a text element, the computer macro symbol may be [B]. Thecomputer macro symbol preferably relates to the computer macro in a waythat is easy for a user to identify the computer macro based on thecomputer macro symbol. In some examples, a plurality of computer macrosymbols may be assigned by the driver. In some examples, a plurality ofcomputer macros may be assigned to a single computer macro symbol. Insome examples, a plurality of computer macro symbols may be assigned toa computer macro. In some examples, each computer macro is assigned to arespective computer macro symbol.

The key and/or button on the peripheral device to which the computermacro is assigned may be any suitable key and/or button. In someexamples, the key and/or button may be automatically assigned by thecomputer driver. In some examples, the key and/or button may beassignable by a user. In some examples, the key and/or button may relateto the assigned computer macro. In some examples, the key and/or buttonmay have the computer macro symbol displayed upon it. In some examples,the key and/or button comprises a display screen which shows theassigned computer macro symbol for the computer macro which has beenassigned to the key and/or button.

The OSD displays the assigned stored computer macro symbol and areference to the macro key and/or button on the peripheral device towhich the computer macro has been assigned. In a non-limiting example,if a macro for bolding a text element has been assigned to the “F1” keyon a keyboard, the OSD may display the assigned computer macro symbol[F] and a reference to the “F1” key such as, for example, “F1”. Thereference may be a numerical reference and/or a text reference and/or averbatim copy of the key and/or button to which the computer macro hasbeen assigned. In some examples, the OSD is displayed in the form of ataskbar and/or a table and/or any other suitable method of displayingthe OSD.

The processor is configured to execute the stored computer macro whenthe key and/or button assigned to the macro is actuated. This may allowfor a more efficient use of a computer program for a user.

In some examples, the method further comprises displaying, on the screenvia the computer driver, a configuration tool configured to display theassigned computer macro and/or the assigned computer macro symbolrelating to the detected computer program, and the key and/or button onthe peripheral device to which the computer macro is assigned, whereinthe configuration tool is further configured to allow a user to alterthe assigned computer macro and/or the assigned computer macro symboland/or the key and/or button on the peripheral device to which thecomputer macro is assigned.

The configuration tool may allow a user to change the computer macrofrom an automatically assigned computer macro to a computer macro thatmay fit the user's preference in a more efficient manner. A user may beable to alter the computer macro from, for example, a computer macro ofthe bolding of a text element to a computer macro for underlining a textelement. A user may also be able to alter the computer macro symbolassigned to the computer macro. The user may be able to alter thecomputer macro symbol to a symbol already present in the detectedcomputer program. In some examples, the user may be able to alter thecomputer macro symbol to a symbol used in a computer program differentfrom the detected computer program. in some examples, the user may beable to alter the computer macro symbol to a bespoke symbol such as, forexample, a symbol downloaded from the internet and/or an alphanumericelement indicating the computer macro and/or a pre-stored image storedin the memory and/or any other suitable method of indicating thecomputer macro. The key and/or button on the peripheral device may beany key and/or button such as, for example, a function key, analphanumeric key or a bespoke key on the peripheral device. In someexamples, the configuration tool is configured to display a userinterface configured to allow the user to select the computer macroand/or the computer macro symbol and/or the key and/or button on theperipheral device and alter the computer macro and/or computer macrosymbol and/or key and/or button on the peripheral device according tothe user's preferences.

In some examples, the key and/or button on the peripheral device is akey and/or button used only for the assigned computer macro. The keyand/or button may be a separate key and/or button from the “standard”keys and/or buttons found on a peripheral device. The key and/or buttonmay be placed above the “standard” function keys and/or buttons on theperipheral device and/or above the numerical keys and/or buttons on theperipheral device and/or above the alphabetical keys and/or buttons onthe peripheral device and/or in any other suitable position. In someexamples, the key used only for the assigned computer macro is a key onthe “standard” keyboard such as, for example, the “F1” key. There may beany number of keys used only for the assigned computer macro. In someexamples, when there are a plurality of computer macros, each computermacro may be assigned a respective key and/or button used only for theassigned computer macros.

In some examples, a plurality of computer macros are assigned to a keyand/or button used only for the assigned computer macros. In someexamples, a plurality of computer macro symbols are assigned to a keyand/or button used only for the assigned computer macros. In someexamples, a plurality of keys and/or buttons used only for the assignedcomputer macros may be assigned to a computer macro and/or a computermacro symbol. In some examples, the key and/or button on the peripheraldevice is a key and/or button separate from an existing function key oralphanumeric key or button on the peripheral device. This may allow fora more efficient use of the peripheral device due to customized computermacro key assignment.

In some examples, the computer program is at least one of:

-   a Microsoft Office program including MS Word, MS Excel, MS    Powerpoint, and MS Access;-   an Adobe program including Adobe Acrobat, Adobe Illustrator, Adobe    Photoshop, and Adobe InDesign;-   a computer-aided design, CAD, program including AutoCad,    Pro-Engineer, Catia, Solidworks, and NX;-   a Windows Pre-Installation Environment program including File    Explorer, Calculator, Paint, and Photos; and-   an Internet browser including Google Chrome, MS Edge, Mozilla    Firefox, and Opera.

The above is not an exhaustive list and the computer programs may beexpanded to computer programs outside the ones mentioned above.

In some examples, the computer driver may automatically assign computermacros and/or computer macro symbols and/or keys and/or buttons on theperipheral device to which the computer macros are assigned. This mayallow for an easy and rapid setup of the peripheral device and/or thedriver for the user with minimal input from the user.

In some examples, the computer macro symbol is a symbol used in thedetected computer program for the assigned computer macro. This mayallow for easy recognition of the compute macro to which the computermacro symbol has been assigned as the user may already be familiar withthe computer macro symbol. In some examples, if the computer macro isaltered, the computer driver automatically alters the computer macrosymbol to a computer macro symbol related to the computer macro. In anon-limiting example, if the user alters the computer macro from acomputer macro for bolding of a text element to a computer macro forunderlining of a text element, the computer driver may automaticallyalter the computer macro symbol from [F] to [U]. In some examples, auser may be able to alter the computer macro symbol to a symbol which isnot standard for the computer macro but is still within the detectedprogram for the assigned computer macro. This allows for the user toalter the assignment of computer macro symbols to their preference,thereby allowing for a more efficient use of the peripheral device.

In some examples, the computer driver detects the computer program bythe following steps:

detecting, by the computer driver, the executed computer program;

detecting, by the computer driver, the computer program in focus;

searching, by the computer driver, for a default/user mapping of thecomputer program in focus in a folder of the driver;

if the computer program in focus comprises a plugin for exporting acomputer macro and a computer macro symbol relating to the computerprogram, executing, by the computer driver, the plugin and sending, bythe plugin, the computer macro and the computer macro symbol to thecomputer driver;

creating, by the computer driver, at least two temporary filescontaining the computer macro and the computer macro symbol, wherein atleast a first file comprises the computer macro and at least a secondfile comprises a reference to the computer macro symbol;

if a default/user mapping is found by the computer driver, searching, bythe computer driver, for the at least two temporary files; and if the atleast two temporary files are found, rendering, by a software componentof the computer driver, the computer macro found in the default/usermapping.

In some examples, the OSD is a taskbar separate to a desktop taskbar.This may allow for the OSD taskbar to not interfere with the desktoptaskbar, thereby allowing for an efficient use of the computer whilestill allowing for the OSD to be displayed.

In some examples, a position of the OSD on the display screen is to bedetermined and changed by a user. In some examples, the user may be ableto drag and drop the OSD to a preferred position. For example, a usermay wish for the OSD to be placed in a first location when the user isusing a file editor and in a second location when the user is using aCAD program. In some examples, the OSD maintains its position until theuser drags and drops the OSD into a different position. In someexamples, the computer driver may offer preset positions of the OSD forthe user to choose from. In some examples, the memory is configured tostore a position of the OSD in each computer program. In some examples,the memory, the processor and the computer driver are configured tostore, and then position, the OSD based on the previous position of theOSD in the detected computer program. In a non-limiting example, if theuser drags and drops the OSD from a first position to a second positionduring use of a CAD program, when the user leaves the CAD program, theOSD returns to the first position. When the user then reopens the CADprogram, the OSD is automatically moved back into the second position.This may allow for an efficient use of the OSD as the OSD can be movedinto a position most suitable for the detected computer program.

In some examples, the OSD is integrated into a desktop taskbar.

In some examples, the OSD is further configured to display a computerprogram symbol relating to the detected computer program and/or thecomputer program to which the computer macro displayed on the OSD isassigned to. The computer program symbol may be a symbol that is used toindicate the currently detected computer program to the user. In someexamples, the computer program symbol may be the symbol that is used ona computer desktop for the detected computer program. In some examples,the computer program symbol may be altered via the configuration tool ina manner similar to the computer macro and/or the computer macro symboland/or the key on the keyboard and/or numerical keypad to which thecomputer macro has been assigned. This may allow for the user to easilysee which computer program is detected, thereby allowing for anefficient use of the computer.

In some examples, the OSD is configured to display the stored key and/orbutton on the peripheral device and the assigned stored computer macrowhich has been assigned to the stored key and/or button. This may allowfor the OSD to display a verbatim copy of the key and/or button to whichthe computer macro is assigned. In a non-limiting example, if thecomputer macro is assigned to the “F1” key, the OSD displays the term“F1” along with the computer macro symbol related to the computer macroassigned to the “F1” key. In some examples, the OSD is configured todisplay an alphanumeric text string relating to the stored key and/orbutton. This may allow for the user to easily see which key and/orbutton is assigned to which computer macro, thereby allowing for anefficient use of the computer.

In some examples, the OSD is configured to display the stored key and/orbutton on the peripheral device in a layout same to a layout of thestored key and/or button on the peripheral device as seen from a user'sperspective. In a non-limiting example, if the keys and/or buttons onthe peripheral device to which computer macros are assigned are in a 2×3configuration, the OSD then displays the keys and/or buttons of theperipheral device in a 2×3 configuration. In some examples, the computermacro symbols relating to the computer macros are also displayed in thesame 2×3 configuration. The keys and/or buttons on the peripheral devicemay be laid out in any suitable manner. This may allow for the user toeasily identify which computer macros are assigned to each key and/orbutton, thereby allowing for an efficient use of the computer.

In some examples, the method comprises: assigning, by the computerdriver, a plurality of computer macros; assigning, by the computerdriver, a plurality of computer macro symbols relating to the pluralityof computer macros; storing, in the memory, the plurality of thecomputer macros, a plurality of keys and/or buttons on the peripheraldevice assigned to the plurality of computer macros and/or the pluralityof assigned computer macro symbols; and displaying, on the displayscreen via the computer driver, the OSD, wherein the OSD is configuredto display the plurality of assigned stored computer macro symbols and aplurality of references relating to the plurality of stored keys and/orbuttons on the peripheral device to which the plurality of assignedstored computer macros have been assigned. The computer macros and/orcomputer macro symbols and/or keys and/or buttons on the peripheraldevice may be assigned and stored in a manner similar to the mannerdescribed above. This may allow for a plurality of computer macros andcomputer macro symbols to be assigned on a single peripheral device.This may in turn allow for a greater range of customizable computermacros as multiple computer macros can be used at the same time. As aplurality of computer macros can be used at the same time, this mayallow for a more efficient use of the computer by a user.

In some examples of the present disclosure, a plurality of keys and/orbuttons is described. In some examples, there may be a plurality of keysand a single button. In some examples, there may be a plurality ofbuttons and a single key.

In some examples, the OSD is configured to display the plurality ofassigned stored computer macro symbols and the plurality of referencesrelating to the plurality of stored keys and/or buttons on theperipheral device to which the plurality of assigned stored computermacros have been assigned in groups, wherein the groups relate to thelayout of the plurality of the stored keys and/or buttons on theperipheral device as seen from a user's perspective. In a non-limitingexample, if the keys and/or buttons on the peripheral device to whichcomputer macros and the computer macro symbols are assigned are ingroups of four, the OSD then displays the keys and/or buttons of theperipheral device and the computer macro symbols relating to thecomputer macros which are assigned to the respective keys and/or buttonsof the peripheral device in groups of four. This may allow for the userto easily identify which computer macros are assigned to each key and/orbutton, thereby allowing for a more efficient use of the computer.

In some examples, wherein the peripheral device is a keyboard and/ornumeric keypad, there are twelve assigned stored computer macro symbolsand twelve references relating to the twelve stored keys on the keyboardand/or the numeric keypad to which the twelve assigned stored computermacros, and wherein the twelve assigned stored computer macro symbolsand twelve references are configured to be displayed on the OSD in threegroups of four. In some examples, the twelve keys relate to the twelve“standard” function buttons found on a keyboard. In some examples, thetwelve stored keys are keys used only for the assigned computer macros,as described above. In some examples, a mix of “standard” function keysand keys used only for the assigned computer macros are within thetwelve keys. This layout may allow for the use of a plurality ofcustomizable macros, thereby allowing for an efficient use of thecomputer. Furthermore, the use of keys used only for the assignedcomputer macros may allow for an expanded use of the keyboard and/ornumerical keypad as the “standard” keys of the keyboard and/or numericalkeypad are not assigned to computer macros. In some examples, there areany number of assigned stored computer macro symbols and/or any numberof references relating to the stored keys on the keyboard and/or thenumeric keypad and/or any number of assigned stored computer macros.

In some particular examples, the OSD is configured to display athirteenth computer macro symbol, wherein the thirteenth computerprogram symbol relates to the detected computer program and/or thecomputer program to which the computer macro displayed on the OSD isassigned to. This may be equivalent to the computer program symbol asdescribed above. The computer macro symbol is described here, as athirteenth symbol but it may alternatively be any numbered symbol.

In some alternative examples, wherein the peripheral device is akeyboard and/or numeric keypad, there are four assigned stored computermacro symbols and four references relating to the four stored keys onthe keyboard and/or the numeric keypad to which the four assigned storedcomputer macros, and wherein the four assigned stored computer macrosymbols and four references are configured to be displayed on the OSD inone group of four. The position and function of the keys may be the sameas described above.

In some particular examples, the OSD is configured to display a fifthcomputer macro symbol, wherein the fifth computer program symbol relatesto the detected computer program and/or the computer program to whichthe computer macro displayed on the OSD is assigned to. This may beequivalent to the computer program symbol as described above. Thecomputer macro symbol is described here, as a fifth symbol but it mayalternatively be any numbered symbol.

In some alternative examples, there is a plurality of peripheral devicescomprising at least a keyboard and a numeric keypad, wherein there aresixteen assigned stored computer macro symbols and sixteen referencesrelating to the sixteen stored keys on the keyboard and/or the numerickeypad to which the sixteen assigned stored computer macros, and whereinthe sixteen assigned stored computer macro symbols and sixteenreferences are configured to be displayed on the OSD in four groups offour. The sixteen assigned stored macro symbols and references relatingto sixteen stored keys may be a combination of the above-mentionedexamples.

In some particular examples, the OSD is configured to display aseventeenth computer macro symbol, wherein the seventeenth computerprogram symbol relates to the detected computer program and/or thecomputer program to which the computer macro displayed on the OSD isassigned to. This may be equivalent to the computer program symbol asdescribed above. The computer macro symbol is described here, as aseventeenth symbol but it may alternatively be any numbered symbol.

In some examples, the assigned computer macro is unique to the detectedcomputer program. In some examples, the computer macro may only be usedin the detected computer program and no other computer programsdetectable by the computer driver. The use of unique computer macros mayallow for the use of specialist computer programs, thereby allowing forthe method to be used in specialized fields.

According to a second aspect, we describe a computer program comprisinga computer driver for creating a computer macro, wherein the computerproduct comprises instructions which, when the program is carried out bya computer, cause the computer to carry out: detecting a computerprogram; assigning a computer macro relating to the computer program toa key and/or button on a peripheral device; assigning a computer macrosymbol relating to the assigned computer macro; and displaying, on ascreen, an on screen display, OSD, configured to display the assignedcomputer macro symbol and a reference to the key and/or button on theperipheral device to which the assigned computer macro has beenassigned.

The computer may be a laptop, a tablet computer, a desktop computer orany other type of computer. The computer may be Windows-based and/orApple-based and/or Linux-based and/or based on any other suitable typeof operating system. The processor may be configured to executeinstructions stored by the memory. The display screen may be acommercially available display screen or a bespoke display screen. Thekeyboard and/or numeric keypad may be a commercially available keyboardand/or numeric keypad or may be a bespoke keyboard and/or numerickeypad.

The computer program to be detected may be any program that isexecutable by a processor of a computer. The computer program may be afile editor and/or a computer-aided drawing, CAD, program and/or aninternet browser and/or a video game and/or a computer repair tooland/or any program executable by a processor on a computer.

The computer macro may be any suitable macro for the detected program.In a non-limiting example, in a file editor, a computer macro may be atext alignment, a bolding of a text element, a italicizing of a textelement, an underlining of a text element, a highlighting of a textelement or any other suitable macro. In a CAD program, the computermacro may be a selection of a line tool, a change of viewingperspective, a selection of a different page a filling in of an element,a chamfering of an element or any other suitable macro. In someexamples, a plurality of computer macros are assigned by the computerdriver.

In some examples, the computer macro may change based on the programdetected by the computer driver. In some examples, the computer macromay change based on the program which is in focus on the computer i.e.based on the computer program currently being used by a user. In anon-limiting example, if a file editor and a CAD program are both openon a computer at the same time, the computer macro may be a first macrowhen the file editor is being used by a user and the computer macro maybe a second computer macro when the CAD program is being used by a user.

The computer macro symbol may be a symbol which is used to signify thecomputer macro. In a non-limiting example, if the computer macro is fora bolding of a text element, the computer macro symbol may be [F]. Thecomputer macro symbol preferably relates to the computer macro in a waythat is easy for a user to identify the computer macro based on thecomputer macro symbol. In some examples, a plurality of computer macrosymbols may be assigned by the driver. In some examples, a plurality ofcomputer macros may be assigned to a single computer macro symbol. Insome examples, a plurality of computer macro symbols may be assigned toa computer macro. In some examples, each computer macro is assigned to arespective computer macro symbol.

The key and/or button on the peripheral device to which the computermacro is assigned may be any suitable key and/or button. In someexamples, the key and/or button may be automatically assigned by thecomputer driver. In some examples, the key and/or button may beassignable by a user. In some examples, the key and/or button may relateto the assigned computer macro. In some examples, the key and/or buttonmay have the computer macro symbol displayed upon it. In some examples,the key and/or button comprises a display screen which shows theassigned computer macro symbol for the computer macro which has beenassigned to the key.

The OSD displays the assigned stored computer macro symbol and areference to the key and/or button on the peripheral device to which thecomputer macro has been assigned. In a non-limiting example, if a macrofor bolding a text element has been assigned to the “F1” key on akeyboard, the OSD may display the assigned computer macro symbol [B] anda reference to the “F1” key such as, for example, “F1”. The referencemay be a numerical reference and/or a text reference and/or a verbatimcopy of the key and/or button to which the computer macro has beenassigned. In some examples, the OSD is displayed in the form of ataskbar and/or a table and/or any other suitable method of displayingthe OSD.

In some examples, the computer program is further configured to display,on the screen, a configuration tool, wherein the configuration tool isconfigured to display the assigned computer macro and/or the assignedcomputer macro symbol, and the key and/or button on the peripheraldevice to which the computer macro is assigned, wherein theconfiguration tool is further configured to allow a user to alter theassigned computer macro and/or the assigned computer macro symbol and/orthe key and/or button on the peripheral device to which the computermacro is assigned.

The configuration tool may allow for a user to change the computer macrofrom an automatically assigned computer macro to a computer macro whichmay fit the user's preference in a more efficient manner. A user may beable to alter the computer macro from, for example, a computer macro ofthe bolding of a text element to a computer macro for underlining a textelement. A user may also be able to alter the computer macro symbolassigned to the computer macro. The user may be able to alter thecomputer macro symbol to a symbol already present in the detectedcomputer program. In some examples, the user may be able to alter thecomputer macro symbol to a symbol used in a computer program differentfrom the detected computer program. In some examples, the user may beable to alter the computer macro symbol to a bespoke symbol such as, forexample, a symbol downloaded from the internet and/or an alphanumericelement indicating the computer macro and/or a pre-stored image storedin the memory and/or any other suitable method of indicating thecomputer macro. The key on the keyboard and/or numerical keypad may beany key such as, for example, a function key, an alphanumeric key or abespoke key on the keyboard and/or numerical keypad. In some examples,the configuration tool is configured to display a user interfaceconfigured to allow the user to select the computer macro and/or thecomputer macro symbol and/or the key on the keyboard and/or numericalkeypad and alter the computer macro and/or computer macro symbol and/orkey on the keyboard and/or numerical keypad according to the user'spreferences.

In some examples, the computer macro symbol is a symbol used in thedetected computer program for the assigned computer macro. This mayallow for easy recognition of the computer macro to which the computermacro symbol has been assigned as the user may already be familiar withthe computer macro symbol. In some examples, if the computer macro isaltered, the computer driver automatically alters the computer macrosymbol to a computer macro symbol related to the computer macro. In anon-limiting example, if the user alters the computer macro from acomputer macro for bolding of a text element to a computer macro forunderlining of a text element, the computer driver may automaticallyalter the computer macro symbol from [B] to [U]. In some examples, auser may be able to alter the computer macro symbol to a symbol which isnot standard for the computer macro but is still within the detectedprogram for the assigned computer macro. This may allow for the user toalter the assignment of computer macro symbols to their preference,thereby allowing for a more efficient use of the keyboard and/or numerickeypad.

In some examples, the computer driver is configured to detect thecomputer program by the following steps:

detecting, by the computer driver, the executed computer program;

detecting, by the computer driver, the computer program in focus;searching, by the computer driver, for a default/user mapping of thecomputer program in focus in a folder of the driver;

if the computer program in focus comprises a plugin for exporting acomputer macro and a computer macro symbol relating to the computerprogram, executing, by the computer driver, the plugin and sending, bythe plugin, the computer macro and the computer macro symbol to thecomputer driver;

creating, by the computer driver, at least two temporary filescontaining the computer macro and the computer macro symbol, wherein atleast a first file comprises the computer macro and at least a secondfile comprises a reference to the computer macro symbol;

if a default/user mapping is found by the computer driver, searching, bythe computer driver, for the at least two temporary files; and

if the at least two temporary files are found, rendering, by a softwarecomponent of the computer driver, the computer macro found in thedefault/user mapping.

According to a third aspect, we describe a computer macro creationsystem comprising: a computer driver configured to carry out the methodas disclosed above; and a peripheral device.

The peripheral device may be a commercially available peripheral deviceor may be a bespoke peripheral device.

In some examples, the memory and processor are configured toperiodically communicate with a cloud storage medium and store the keyand/or button on the peripheral device assigned to the computer macroand/or the assigned computer macro symbol and/or the computer macroand/or the assigned computer macro symbol themselves in the cloudstorage medium. This may allow for the assigned computer macros, theassigned computer macro symbols and the keys and/or buttons of theperipheral device to which the computer macros and computer macrosymbols are assigned to be stored in the cloud, thereby allowing for theassignments to be maintained if the peripheral device is transferred toa second computer. This may allow for a user to maintain their createdand customized computer macros across devices. The user may access thecloud stored computer macros, computer macro symbols and keys and/orbuttons via a user account on a website. The computer driver and/orprocessor and/or memory may also be coupled to this same account foreasy storage and/or retrieval of the computer macros, computer macrosymbols and keys and/or buttons on a second computer.

According to a fourth aspect, we describe a data processing systemcomprising means for carrying out the method as described above.

According to a fifth aspect, we describe a computer-readable storagemedium comprising instructions which, when executed by a computer, causethe computer to carry out the method as described above.

Throughout the present disclosure, in some examples, not all of thedescribed steps of the described methods are required. In some examples,the steps may be in a different order. In some examples, some of thesteps may happen simultaneously.

It is clear to a person skilled in the art that the statements set forthherein may be implemented under use of hardware circuits, softwaremeans, or a combination thereof. The software means can be related toprogrammed microprocessors or a general computer, an ASIC (ApplicationSpecific Integrated Circuit) and/or DSPs (Digital Signal Processors).For example, the processor may be implemented at least partially as acomputer, a logical circuit, an FPGA (Field Programmable Gate Array), aprocessor (for example, a microprocessor, microcontroller (μC) or anarray processor)/a core/a CPU (Central Processing Unit), an FPU(Floating Point Unit), NPU (Numeric Processing Unit), an ALU (ArithmeticLogical Unit), a Coprocessor (further microprocessor for supporting amain processor (CPU)), a GPGPU (General Purpose Computation on GraphicsProcessing Unit), a multi-core processor (for parallel computing, suchas simultaneously performing arithmetic operations on multiple mainprocessor(s) and/or graphical processor(s)) or a DSP.

Even if some of the features described above have been described inreference to the first aspect, these features may also be in referenceto any of the second to fifth aspects and vice versa. These aspects mayalso apply to devices, methods and systems for creating a computermacro.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of the solution will now be further described,by way of example only, with reference to the accompanying figures,wherein like reference numerals refer to like parts, and in which:

FIG. 1 shows a flow diagram of a method of creating computer macros anddisplaying computer macros on a display screen according to someexamples as described herein;

FIG. 2 shows a schematic diagram of a display screen and peripheraldevices according to some examples as described herein;

FIG. 3 shows a schematic diagram of a computer according to someexamples as described herein;

FIG. 4 shows a flow diagram of a method of retrieving computer macrosand computer macro symbols according to some examples as describedherein; and

FIG. 5 shows a flow diagram of a method of altering a computer macroaccording to some examples as described herein.

DETAILED DESCRIPTION OF THE SOLUTION

Throughout the present disclosure, reference is made to a Windowsoperating system. The described solution may also be suitable for anApple operating system and/or a Linux operating system and/or any othertype of operating system. Features described in the present disclosurewith relation to a Windows operating system can be realized with theirequivalents in other operating systems.

FIG. 1 shows a flow diagram of a method of creating computer macros anddisplaying computer macros on a display screen according to someexamples as described herein.

The method 100 begins by detecting S110, by a computer driver being atleast partially resident in the memory (see FIG. 3 ), a computer programbeing at least partially resident in the memory to be executed in acomputer (see FIG. 3 ). The computer program may be any suitablecomputer program for which computer macros can be assigned to. Thecomputer program may alternatively or additionally be a computer programwhich is at least partially executable by a processor (see FIG. 3 ). Insome examples, the computer program is not partially resident in thememory, but is still at least partially executable by the processor. Insome examples, the detectable computer program is a file editor and/or acomputer aided drawing, CAD, program and/or an Internet browser and/orvideo game and/or a computer repair tool and/or any program executableby a processor on a computer. In some examples, the computer program isa computer program which is in development, in its alpha phase or in itsbeta phase. A method of detecting a computer program is described inmore detail below.

After detecting S110 the computer program, the computer driver thenassigns S120 at least one computer macro relating to the detectedcomputer program to a key on the keyboard and/or numeric keypad. Theassigned key may be any key on the keyboard and/or numeric keypad. Insome examples, the key may be at least one of the “F1” to “F12” keys ona standard keyboard. In some examples, the assigned key is one of thestandard keys on a numeric keypad. In some examples, the assigned key isone of the other keys which are located on a standard keyboard such as,for example, the control key, the Alt key, the tab key or any other keyon the keyboard. In some examples, the assigned key is a bespoke key onthe keyboard and/or numeric keypad. In some examples, the bespoke key isplaced above the row of function keys on a standard keyboard.Additionally or alternatively, the bespoke key is placed above thestandard keys on the numeric keypad. In some examples, there are aplurality of bespoke keys on the keyboard and/or numeric keypad. In someexamples, there is a row of bespoke keys above the row of function keyson a standard keyboard. Additionally or alternatively, there is a row ofbespoke keys above the standard keys on the numeric keypad. In someexamples, the bespoke key is only used for the at least one computermacro.

After assigning S120 the computer macro to the key on the keyboardand/or numeric keypad, the computer driver then assigns S130 a computermacro symbol relating to the assigned computer macro. The computer macrosymbol may relate to the computer macro. In some examples, the computermacro symbol is a symbol which already exists in the detected computerprogram. In this case, the computer driver may then assign this computermacro symbol to the computer macro. In a non-limiting example, if theassigned computer macro is a macro for centering a line of text inMicrosoft Word, the computer driver may then assign the center textsymbol of Microsoft Word to the computer macro. In some examples, theassigned computer macro symbol is a symbol that exists in the detectedcomputer program but is not the symbol associated with the assignedcomputer macro. In a non-limiting example, if the assigned computermacro is a macro for centering a line of text in Microsoft Word, thecomputer driver may assign the highlighting symbol within Microsoft Wordto the computer macro. In some examples, the computer macro symbol isnot a symbol that is available within the detected computer program butis available in a secondary non-detected computer program. In someexamples, if a computer macro is recognized by the computer driver butno computer macro symbol can be assigned for the computer macro, thecomputer driver may automatically insert a placeholder computer macrosymbol. In some examples, after the placeholder computer macro symbolhas been inserted, the user may be able to customize the computer macrosymbol, as described in the present disclosure. In some examples, noplaceholder computer macro symbol is inserted and the user is directlyasked as to which computer macro symbol should be assigned to thecomputer macro. In some examples, the assigned computer macro symbol maybe a symbol or a picture that is downloaded from the Internet and is atleast partially storable within the memory of the computer. In someexamples, the computer macro symbol may be an alphanumeric text string.This may allow for a user to customize their experience.

After assigning S130 the computer macro symbol to the computer macro,the key on the keyboard and/or numeric keypad which is assigned to thecomputer macro and/or the assigned computer macro symbol is stored S140in the memory of the computer. This may then allow for the computermacro and/or computer macro symbol and/or key to which the computermacro is assigned, to be stored for later use. In some examples, if auser of the computer changes programs from a first computer program to asecond computer program, the memory may store the computer macro and/orthe computer macro symbol and/or the key to which the computer macro isassigned. This may mean that when the user comes back to use the firstprogram, the settings are not lost and the user does not have toreassign the computer macro and/or computer macro symbol and/or key towhich the computer macro is assigned.

After storing S140 the computer macro and/or the computer macro symboland/or the key to which the computer macro is assigned, the computerdriver then displays S150, via a display screen, an on screen display,OSD, which is configured to display the stored computer macro symbol anda reference relating to the key on the keyboard and/or numeric keypad towhich the computer macro has been assigned. As described above, the keyon the keyboard and/or numeric keypad may be any key on the keyboardand/or numeric keypad and/or a bespoke key on the keyboard and/ornumeric keypad. By displaying the computer macro symbol and thereference relating to the key on the keyboard and/or numeric keypad towhich the computer macro has been assigned, this may allow the user toeasily recognize which computer macro has been assigned to which key. Amethod of displaying the computer macro symbol and the reference to thekey to which the computer macro has been assigned is described in moredetail below.

Once the on-screen display has been displayed S150, the processorexecutes S160 the computer macro assigned to the stored computer macroin the detected computer program when the key on the keyboard and/ornumeric keypad assigned to the computer macro is actuated. This mayallow for the user to efficiently use the detected computer program.

In some examples, the computer driver is configured to display S170configuration tool via the display screen. The configuration tool isdescribed in more detail below.

The above method, and the methods in the present disclosure, relate to akeyboard and/or a numeric keypad but may additionally or alternativelyrelate to any suitable peripheral device such as, for example, a mouse,a bespoke peripheral device, a controller, a touchpad, a trackball, ajoystick or any other suitable peripheral device.

FIG. 2 shows a schematic diagram of a display screen and peripheraldevices according to some examples as described herein.

In this example, the display screen is a computer screen 200. In someexamples, the computer screen may alternatively be a monitor, a laptopscreen, a tablet computer screen, a mobile phone screen or any othertype of screen that is suitable for displaying images. The computerscreen 200 may be a commercially available computer screen or a bespokecomputer screen.

On the computer screen 200, the computer driver, via the computer screen200, displays an OSD taskbar 210. The OSD taskbar 210 is configured todisplay the computer macro symbols 215 that have been assigned to thecomputer macros by the computer driver, as described in the presentdisclosure. It can be seen that the computer macro symbols 215 on theOSD taskbar 210 have been split up into groups of four and the OSDtaskbar 210 itself, has been split into two parts. The purpose of thiswill be described in more detail below.

In this example, the OSD taskbar 210 is located above the standardWindows taskbar 220. This may then allow for a user to move the OSDtaskbar 210 according to their wishes dependent on the computer programthe user is currently using. In some examples, the OSD taskbar 210 isintegrated into the standard Windows taskbar 220. This may allow for auser to easily find the OSD taskbar 210 and/or allow for the OSD taskbar210 to be integrated into a desired computer program. In some examples,the user may decide to have the OSD taskbar 210 separate from thestandard Windows taskbar 220 when using some computer programs and havethe OSD taskbar 210 integrated into the standard Windows taskbar 220when using other computer programs. In this example, the memory maystore these choices and when the user uses a computer program, thememory, the processor of the computer and the computer driver may worktogether to display the stored choice for the computer program on thecomputer screen 200.

In some examples, the OSD taskbar 210 is movable by a user. The user maybe able to alter the positioning of the OSD taskbar 210 via aconfiguration tool and/or via dragging and dropping the OSD taskbar 210and/or via coding and/or via any other suitable method. In someexamples, the memory of the computer is configured to store a positionof the OSD taskbar 210 in each computer program. In some examples, thememory, the processor and the computer driver are configured to store,and then position, the OSD taskbar 210 based on the previous position ofthe OSD taskbar 210 in the detected computer program. For example, ifthe user drags and drops the OSD taskbar 210 from a first position to asecond position during use of a first computer program, when the userleaves the first computer program and uses a second computer program,the OSD taskbar 210 returns to the first position. When the user thenreopens the first computer program, the OSD taskbar 210 is automaticallymoved back into the second position i.e. the position to which the OSDtaskbar 210 was dragged and dropped to. This may allow for an efficientuse of the OSD taskbar 210 as the OSD taskbar 210 can be moved into aposition most suitable for the detected computer program.

In this example, there are a plurality of macro keys 230 located on thekeyboard 240 and the numerical keypad 250. In some examples, the macrokeys 230 are only on the keyboard 240 or the numerical keypad 250. Insome examples, there is only a keyboard 240 or only a numerical keypad250. In some examples, the keyboard 240 and the numeric keypad 250 are asingle entity. In some examples, the keyboard 240 and/or numeric keypad250 may be a commercially available keyboard 240 and/or numeric keypad250, or may be a bespoke keyboard 240 and/or numeric keypad 250. In thisexample, the OSD taskbar 210 displays the computer macro symbols 215which are assigned to the computer macros in a way that reflects themacro keys 230 on the keyboard 240 and numerical keypad 250. It can beseen that there are twelve macro keys on the keyboard 240 split intothree groups of four and a fourth set of four macro keys on thenumerical keypad 250. These groupings are then shown on the computerscreen 200, via the OSD taskbar 210 in the same way as they aredisplayed on the keyboard 240 and the numeric keypad 250. In particular,a first part of the OSD taskbar 210 displays three groups of fourcomputer macro symbols 215 relating to the three groups of four macrokeys on the keyboard 240 and a second part of the OSD taskbar displays agroup of four computer macro symbols 215 which relate to the macro keys230 on the numeric keypad 250. In some examples, the two parts of theOSD taskbar 210 may be merged and form a single OSD taskbar 210. In someexamples, the layout of the computer macro symbols 215 on the OSDtaskbar does not relate to the layout of the macro keys 230 on thekeyboard 240 and numerical keypad 250. In some examples, the OSD taskbar210 further comprises an alphanumeric text string relating to the key onthe keyboard 240 and/or numeric keypad 250 to which the computer macroand its respective symbol 215 have been assigned. In some examples, alayout of the computer macro symbols 215 in the OSD taskbar 210 can bealtered by a user. The user may be able to alter this positioning via aconfiguration tool and/or via dragging and dropping the computer macrosymbols 215 and/or via coding and/or via any other suitable method. Insome examples, the OSD taskbar 210 is further configured to display asymbol relating to the detected computer program. In this case, the OSDtaskbar 210 may display a symbol that is used on a computer desktop forthe detected computer program.

In some examples, there is a plurality of computer screens 200. In thiscase, the OSD taskbar 210 may be configured to be stretched across theplurality of computer screens 200. For example, if there are sixteencomputer macro symbols 215 displayed on the OSD taskbar 210 and thereare two computer screens 200, the computer driver may, via the computerscreen 200, display a first eight computer macro symbols on the firstscreen and a second eight computer macro symbols 215 on the secondscreen in a single OSD taskbar 210 shown across both computer screens200. This may mean that the OSD taskbar 210 is only interrupted by theframes of the computer screens 200. In some examples, if the OSD taskbar210 is placed at the edge of one of the computer screens 200, a part ofthe OSD taskbar 210 can be seen on the first screen and the remainder ofthe OSD taskbar 210 can be seen on the second screen. That is to say,the dimensions of the OSD taskbar 210 remain the same but the OSDtaskbar 210 is shared across two computer screens 200. Alternatively,the entire OSD taskbar 210 may be repeated on each computer screen.Alternatively, there may only be a single OSD taskbar 210 across theplurality of computer screens 200 and the position of the OSD taskbar210 may be altered via a configuration tool and/or via dragging anddropping the OSD taskbar 210 and/or via coding and/or via any othersuitable method across the plurality of computer screens 200. In someexamples, the OSD is not in the form of a taskbar 210 but may be in theform of a table, an OSD region, or any other suitable method ofdisplaying the computer macro symbols 215 according to a user'spreference.

In this example, the macro keys 230 on the keyboard 240 and the numerickeypad 250 are located above the standard function keys 260. A standardfunction key may be defined as, for example, keys “F1” to “F12” on astandard keyboard. This may allow for the macro keys 230 to be easilyidentifiable by a user of the keyboard 240 and numerical keypad 250. Itcan be seen in FIG. 2 that the macro keys 230 are distinct and separateto the standard function keys 260 found on the keyboard 240 and/or thenumeric keypad 250.

It is known to have the standard function keys 260 which are fixed intheir usage and the computer macros assigned to the standard functionkeys 260 cannot be altered by a user. In this example, the macro keys230 are used only for the computer macros as described throughout thepresent disclosure, and the computer macros assigned to the macro keys230 can be altered dependent on the detected computer program, as isdescribed in more detail below.

FIG. 3 shows a schematic diagram of a computer according to someexamples as described herein.

FIG. 3 shows a computer 300. The computer 300 may be a desktop computer,a tablet computer, electronic components within a mobile phone or anyother suitable device which is suitable for carrying out the methodsdescribed in the present disclosure.

The computer comprises a memory 310, a processor 320 and a computerdriver 330.

In this example, the memory 310 is configured to be accessible by theprocessor 320. In some examples, the computer driver 330 is at leastpartially resident in the memory 310. In some examples, the computerprogram used by the user is at least partially resident in the memory310. In some examples, the memory 310 is configured to store thecomputer macro, the key on the keyboard 240 and/or the numeric keypad250 assigned to the computer macro and/or the assigned computer macrosymbol 215. In some examples, the computer driver 330 is stored by thememory 310. The computer driver 330 may be preinstalled on the memory310 or may be downloadable, and then storable by the memory 310, fromthe internet and/or from a compact disk and/or a USB stick and/or fromany other suitable source. In some examples, the memory 310 is locatedin the keyboard 240 and/or numeric keypad 250 and not in the computer300.

The processor 320 may be configured to execute instructions stored bythe memory 310 and/or process signals received from the keyboard 240 andnumeric keypad 250 relating to an actuation of one of the at least onemacro keys 230. The computer program to be detected by the computerdriver 330 may be any program that is executable by the processor 320.The computer program may be a file editor and/or a computer-aideddrawing, CAD, program and/or an internet browser and/or a video gameand/or a computer repair tool and/or any program executable by theprocessor 320.

In this example, the computer driver 330 is configured to detect acomputer program being at least partially resident in the memory 310.The computer driver 330 also assigns at least one computer macrorelating to the detected computer program to a key on the keyboard 240and/or numeric keypad 250. The computer driver 330 additionally assignsa computer macro symbol 215 relating to the assigned computer macro.Furthermore, the computer driver 330, via the computer screen 200,displays the OSD taskbar 210, wherein the OSD taskbar 210 is configuredto display the assigned stored computer macro symbol 215 and a referencerelating to the stored key on the keyboard 240 and/or the numeric keypad250 to which the assigned stored computer macro has been assigned. Insome examples, a plurality of computer macros are assigned by thecomputer driver 330. In some examples, the key on the keyboard 240and/or numeric keypad assigned to a computer macro may be automaticallyassigned by the computer driver 330 upon startup of the computerprogram. In some examples, the computer driver 330 may automaticallyassign computer macros and/or computer macro symbols 215 and/or keys onthe keyboard 240 and/or numeric keypad 250 to which the computer macrosare assigned. In some examples, if the computer macro is altered, thecomputer driver 330 automatically alters the computer macro symbol 215to a computer macro symbol 215 related to the altered computer macro. Insome examples, the computer driver 330 may offer preset positions of theOSD for the user to choose from. These presets may be presented withinthe detected computer program and/or via a configuration tool. In someexamples, the computer macro may only be used in the detected computerprogram and no other computer programs detectable by the computer driver330. In some examples, the computer driver 330 is configured to alterthe functioning of at least one of the macro keys 230 dependent on thecurrently detected computer program. For example, a macro key 230 maycenter a line of text when a file editor program is detected and thenthe same macro key 230 may be a “create line” macro when a CAD programis detected.

In some examples, the memory 310 and processor 320 are configured toperiodically communicate with a cloud storage medium and store the keyand/or button on the peripheral device assigned to the computer macroand/or the assigned computer macro symbol and/or the computer macroand/or the assigned computer macro symbol themselves in the cloudstorage medium. This may allow for the assigned computer macros, theassigned computer macro symbols and the keys and/or buttons of theperipheral device to which the computer macros and computer macrosymbols are assigned to be stored in the cloud, thereby allowing for theassignments to be maintained if the peripheral device is transferred toa second computer. This may allow for a user to maintain theircustomized computer macros across devices. The user may access the cloudstored computer macros, computer macro symbols and keys and/or buttonsvia a user account on a website. The computer driver 330 and/orprocessor 320 and/or memory 310 may also be coupled to this same accountfor easy storage and/or retrieval of the computer macros, computer macrosymbols and keys and/or buttons on a second computer.

A method of the computer driver 330 detecting a computer program,retrieving a computer macro, retrieving a computer macro symbol anddisplaying the retrieved computer macro symbol 215 is described in moredetail below.

In some examples, the computer 300 further comprises a USB interface 340for USB devices to be coupled to the computer 300. USB devices may be,for example, keyboards 240, numeric keypads 250, mice, microphones orany other USB compatible device. In some examples, the computer 300further comprises a transceiver 350 for Bluetooth devices to be coupledto the computer 300. Bluetooth devices may be, for example, keyboards240, numeric keypads 250, mice, microphones, headphones or any otherBluetooth compatible device. In some examples, the computer 300 furthercomprises an HDMI/DVI/D-SUB interface 360 for HDMI/DVI/D-SUB compatibledevices, such as monitors, to be coupled to the computer 300. Each ofthe USB interface 340, the transceiver 350 and the HDMI/DVI/D-SUBinterface 360 may be coupled to the computer driver 330. This may thenallow for the computer driver 330, the memory 310 and the processor 320to interact with the peripheral devices as described in the presentdisclosure.

In some examples, the keyboard 240 and/or the numeric keypad 250 alsocomprise a transceiver. In a particular example, the keyboard 240 isconfigured to be coupled to the computer 300 via the USB interface 340and further comprises a transceiver. The numeric keypad 250 comprises atransceiver of its own which is configured to communicate wirelesslywith the transceiver in the keyboard 240, wherein an input to thenumeric keypad 250 is communicated to the computer 300 via the wiredcoupling of the keyboard 240 to the computer 300. This may then lead toa numeric keypad 250 which comprises no wired coupling to the computer300, thereby leading to the numeric keypad 250 being able to be placedin a user's preferred position, leading to a more efficient workingmethod for the user and a customizable peripheral device setup.Alternatively, the previously described example may work in the reversei.e. the numerical keypad 250 is configured to be coupled to thecomputer 300 via the USB interface 340 and the keyboard 240 comprises nowired coupling to the computer 300.

The computer 300 may additionally or alternatively comprise otherinterfaces suitable for coupling further peripheral devices to thecomputer 300. In some examples, the keyboard 240 and/or the numerickeypad 250 are integral to the computer 300 i.e. in a laptop-likeconfiguration.

FIG. 4 shows a flow diagram of a method of retrieving computer macrosand computer macro symbols according to some examples as describedherein. More specifically, FIG. 4 shows a method of retrieving acomputer macro, retrieving a computer macro symbol and displaying theretrieved computer macro symbol 215.

The method 400 begins by detecting S410, by the computer driver 330, acomputer program being run by a user of the computer 300 on the computer300 i.e. being executed by the computer 300. In some examples, there aremultiple computer programs running simultaneously and the computerdriver 330 is configured to detect only the computer program currentlybeing used by the user i.e. the computer program currently in focus onthe computer. The computer program may be detected by the computerdriver 330 inspecting an .exe and/or a .d11 file at least partiallystored within the memory 310 of the computer 300. The computer driver330 may be able to derive the name of the computer program being runbased upon an inspected file. The name of the computer program may thenbe stored via the memory 310 of the computer 300. In some examples, inorder to store information about the detected computer program and/orthe assigned computer macro and/or the assigned computer macro symboland/or the key on the keyboard 240 and/or numeric keypad to which thecomputer macro is assigned, the computer driver 330 may create a fileand/or a folder in the memory 310. The detected computer program may beat least one of a Microsoft Office program, an Adobe program, acomputer-aided design, CAD, program, a Windows Pre-InstallationEnvironment program and an Internet browser. In some examples, thecomputer driver may then search for a default/user mapping of thecomputer program in focus in a folder of the driver. A default/usermapping may be defined as a default set of computer macros and computermacro symbols and/or a set of computer macros and computer macro symbolsdefined by a user.

After detecting S410 the computer program, the computer driver 330 thenretrieves S420 at least one computer macro and at least one computermacro symbol 215 relating to the detected computer program based on aplugin associated with the detected computer program. The plugin may beat least partially embedded in the computer program and/or at leastpartially external to the computer program. The at least one computermacro and at least one computer macro symbol 215 may be retrieved by thecomputer driver executing the plugin and the plugin sending the computermacro and the computer macro symbol 215 to the computer driver. In someexamples, the computer driver 330 automatically assigns at least one ofthe retrieved computer macros to at least one of the macro keys 230 onthe keyboard 240 and/or the numeric keypad 250. In some examples, thecomputer driver 330 searches through at least one .exe and/or .d11 fileof the detected computer program to search for at least one computermacro. The computer driver 330 may then collate a list of the computermacros found and provide them for use. In some examples, the computerdriver 330 automatically assigns at least one of the found computermacros to at least one of the macro keys 230 on the keyboard 240 and/orthe numeric keypad 250. In some examples, this automatically assignedcomputer macro is the first computer macro found by the computer driver330 during the search. Information about a most commonly used computermacro may be stored in a .d11 file of the detected computer programand/or the computer driver may download, to the memory 310, via acoupling to the Internet, a list of most commonly used computer macrosin the detected computer program.

After retrieving S420 the at least one computer macro and the at leastone computer macro symbol 215, the computer driver 330 then creates S430at least two temporary files containing the at least one computer macroand the at least one computer macro symbol 215, wherein at least a firstfile comprises the at least one computer macro and at least a secondfile comprises a reference to the at least one computer macro symbol215. The computer driver 330 may create S430 the at least two temporaryfiles after the retrieval S420 of the at least one computer macro and atleast one computer macro symbol 215 or, alternatively, at the same timeas the retrieval S420 of the at least one computer macro and at leastone computer macro symbol 215. The computer driver 300 may search atleast one .exe and/or .d11 file of the detected computer program tosearch for the at least one computer macro symbol 215. The computerdriver 330 may then collate a list of the computer macro symbols 215found and provide them for a user to use. In some examples, the computerdriver 330 automatically assigns a found computer macro symbol 215 toits respective computer macro and provides this combination for use bythe user. In some examples, the computer driver 330 does notautomatically assign the found computer macro symbol 215 to itsrespective computer macro and provides the user with a choice, via apopup window and/or via the configuration tool, of which computer macrosymbol is to be assigned to a respective computer macro. The computerdriver 330 may then sort the computer macros and computer macro symbols215 into the at least two temporary files.

In some examples, such as in an Internet browser, there are no computermacros nor computer macro symbols 215. In this case, the computer driver330 may recognize that the detected computer program is an Internetbrowser and use well known websites, such as YouTube and Wikipedia, asmacros instead. The well known websites may be detected via the pluginrelated to the Internet browser. The computer macro symbols 215 mayrelate to the website i.e. be a website logo. The computer driver 330may also via the memory 310 and/or via the Internet, display computermacro symbols 215 relating to these websites. In some examples, thecomputer driver 330 is configured to recognize a most visited website bya user and use this website as a computer macro. In some examples, if amost visited website changes, the computer driver 330 is configured toreplace the previously most visited website with the newly most visitedwebsite. If a website is used, when the user actuates the macro key 230associated with the computer macro, the memory 310, the processor 320and the computer driver 330 may work together to launch the websiteassociated with the actuated key. In some examples, after creating S430the at least two temporary files, the computer driver searches S440 fora default/user mapping and if found, the computer driver searches S440for the at least two temporary files.

If the at least two temporary files are found, the computer driver 330is then configured to render S450, by a software component of thecomputer driver, the command in the order found in the default/usermapping. In some examples, the retrieved computer macro and itsrespective computer macro symbol are then displayed on the OSD taskbar210 in a configuration described in the present disclosure. In someexamples, only the retrieved computer macro symbol 215 is displayed onthe OSD taskbar 210 in a configuration described in the presentdisclosure. In some examples, the OSD taskbar 210 is further configuredto display an alphanumeric text string that relates to the computermacro. The alphanumeric text string may located above and/or belowand/or one side of the computer macro symbol 215 or alternatively, bedisplayed instead of the computer macro symbol 215.

In some examples, the computer driver 330 is further configured toretrieve a symbol relating to the detected computer program. The symbolmay be a symbol that is used on a computer desktop for the detectedcomputer program. This may allow for the user to easily identify whichprogram the currently displayed computer macros and/or computer macrosymbols relate to. The computer driver 330 may do this by retrieving thesymbol using the same method as described above in relation to theretrieval S420 of the at least one computer macro and the at least onecomputer macro symbol 215. This symbol may be displayed in addition tothe computer macro symbols 215 displayed on the OSD taskbar 210 asdescribed in the present disclosure or may replace one of the computermacro symbols 215.

FIG. 5 shows a flow diagram of a method of altering a computer macroaccording to some examples as described herein.

FIG. 5 shows a flow diagram of a method of altering a computer macroand/or a computer macro symbol and/or a key to which a computer macro isassigned to.

The method 500 begins with displaying S170, on the display screen 200via the computer driver 330. The configuration tool may then beconfigured to display S510 the currently assigned computer macro and/orthe currently assigned computer macro 215 symbol and/or the key on thekeyboard 240 and/or numeric keypad 250 to which the computer macro iscurrently assigned. The configuration tool is further configured toallow a user to alter S520 the assigned computer macro and/or assignedcomputer macro symbol 215 and/or key on the keyboard 240 and/or numerickeypad 250 to which the computer macro is assigned.

The configuration tool may allow a user to change the computer macrofrom an automatically assigned computer macro to a computer macro whichmay fit the user's preference in a more efficient manner. A user may beable to alter the computer macro from, for example, a computer macro ofthe bolding of a text element to a computer macro for underlining a textelement. In some examples, the user may also be able to alter thecomputer macro symbol 215 assigned to the computer macro. In someexamples, the user may be able to alter the computer macro symbol 215 toa symbol already present in the detected computer program. In someexamples, the user may be able to alter the computer macro symbol 215 toa symbol used in a computer program different from the detected computerprogram. In some examples, the user may be able to alter the computermacro symbol 215 to a bespoke symbol such as, for example, a symboldownloaded from the internet and/or an alphanumeric element indicatingthe computer macro and/or a pre-stored image stored in the memory and/orany other suitable method of indicating the computer macro. The key onthe keyboard 240 and/or numerical keypad 250 may be any key such as, forexample, a function key, an alphanumeric key or a bespoke key on thekeyboard 240 and/or numerical keypad 250.

In some examples, the configuration tool is configured to display a userinterface configured to allow the user to select the computer macroand/or the computer macro symbol 215 and/or the key on the keyboard 240and/or numerical keypad 250 and alter the computer macro and/or computermacro symbol 215 and/or key on the keyboard 240 and/or numerical keypad250 according to the user's preferences.

The user interface may comprise a table and/or a set of drop-down menusto alter at least one computer macro for a detected computer programand/or at least one computer macro symbol 215 assigned to the at leastone computer macro and/or a key assigned to the at least one computermacro. The configuration tool may comprise a set of computer macroswhich are available from the macros within the detected computerprogram, wherein the macros are retrieved by the method described abovein relation to FIG. 4 . The configuration tool may also comprise a setof computer macro symbols 215 which are available from the macro symbols215 within the detected computer program, wherein the macro symbols 215are retrieved by the method described above in relation to FIG. 4 . Insome examples, the configuration tool may also show at least oneimage/symbol which has been downloaded from the Internet. In someexamples, the configuration tool is configured to allow a user to inputa custom alphanumeric text string for representing the computer macro.This may allow for the user to customize the OSD taskbar 210 in apersonal manner. In some examples, the user interface is at leastpartially voice controlled. For example, a user may use their voice toselect a key assigned to the at least one computer macro and then selecta new computer macro to be assigned to that key via their voice. Theuser may then confirm or deny this alteration via their voice. The usermay be able to do this via a microphone coupled to, or integral to, thecomputer 300.

After the alteration S520 of the computer macro and/or computer macrosymbol 215 and/or key to which the computer macro has been assigned, thememory 310 may then store S530 the altered computer macro and/orcomputer macro symbol 215 and/or key to which the computer macro hasbeen assigned by overwriting the previously stored data. After thesechoices have been stored S530, the computer driver 330 may then beconfigured to display, via the display screen 200, the OSD taskbar 210which comprises the altered computer macro symbol 215 and/or key towhich the computer macro has been assigned and any computer macro symbol215 and/or key to which the computer macro has been assigned should theynot have been altered within the configuration tool.

The variants described above are merely intended to provide a betterunderstanding of the structure, the mode of operation and theproperties; they do not limit the disclosure to the embodiments. TheFigures are partly schematic, with essential properties and effectsbeing shown partly enlarged in order to clarify the functions, operatingprinciples, technical concepts and features. In this context, each modeof operation, each principle, each technical concept and each featuredisclosed in the Figures or in the text can be combined with all claims,each feature in the text and in the other Figs, other functionalities,principles, technical features and characteristics contained in orresulting from this disclosure, so that all conceivable combinations canbe attributed to the described solutions. Combinations between allindividual embodiments in the text, i.e. in each section of thedescription, in the claims and also combinations between differentvariants in the text, in the claims and in the Figures are alsoincluded.

Also, the claims do not limit the disclosure and thus the combinationpossibilities of all disclosed features among each other. All disclosedfeatures are explicitly disclosed both individually and in combinationwith all other features herein. Many other effective alternatives willoccur to the skilled person. It will be understood that the solution isnot limited to the described embodiments and encompasses modificationsapparent to those skilled in the art and lying within the scope of theclaims appended hereto.

The invention claimed is:
 1. A method for creating a computer macro, thecomputer macro being executed on a computer, the computer including aprocessor, a display screen, a peripheral device, and a memoryaccessible by the processor, peripheral device, the method comprising:detecting, by a computer driver being at least partially resident in thememory, a computer program being at least partially resident in thememory to be executed in the computer; assigning, by the computerdriver, at least one computer macro relating to the detected computerprogram to a key and/or button on the peripheral device; assigning, bythe computer driver, a computer macro symbol relating to the assignedcomputer macro; storing, in the memory, the computer macro, the keyand/or button on the peripheral device assigned to the computer macroand/or the assigned computer macro symbol; displaying, on the displayscreen via the computer driver, an on-screen-display, OSD, wherein theOSD is configured to display the assigned stored computer macro symboland a reference relating to the stored key and/or button on theperipheral device to which the assigned stored computer macro has beenassigned; and executing, by the processor, the stored computer macroassigned to the stored computer macro in the computer program when thestored key and/or button on the peripheral device is actuated.
 2. Themethod as claimed in claim 1, further comprising displaying, on thescreen via the computer driver, a configuration tool configured todisplay the assigned computer macro and/or the assigned computer macrosymbol relating to the detected computer program, and the key and/orbutton on the peripheral device to which the computer macro is assigned,wherein the configuration tool is further configured to allow a user toalter the key and/or button on the peripheral device to which thecomputer macro is assigned; and/or wherein the key and/or button on theperipheral device is a key and/or button used only for the assignedcomputer macro; and/or wherein the key and/or button on the peripheraldevice is a key and/or button separate from an existing function key oran alphanumeric key on the peripheral device; and/or wherein thecomputer program is at least one of Pre-Installation Environmentprogram; and an Internet browser; and/or wherein the OSD is integratedinto a desktop taskbar, and/or wherein the OSD is further configured todisplay a computer program symbol relating to the detected computerprogram and/or the computer program to which the computer macrodisplayed on the OSD is assigned to; and/or wherein the OSD isconfigured to display the stored key and/or button on the peripheraldevice in a layout same to a layout of the stored key and/or button onthe peripheral device as seen from a user's perspective.
 3. The methodas claimed in claim 1, wherein the method comprises: assigning, by thecomputer driver, a plurality of computer macros; assigning, by thecomputer driver, a plurality of computer macro symbols relating to theplurality of computer macros; storing, in the memory, the plurality ofthe computer macros, a plurality of keys and/or buttons on theperipheral device assigned to the plurality of computer macros and/orthe plurality of assigned computer macro symbols; and displaying, on thedisplay screen via the computer driver, the OSD, wherein the OSD isconfigured to display the plurality of assigned stored computer macrosymbols and a plurality of references relating to the plurality ofstored keys and/or buttons on the peripheral device to which theplurality of assigned stored computer macros have been assigned.
 4. Themethod as claimed in claim 3, wherein the OSD is configured to displaythe plurality of assigned stored computer macro symbols and theplurality of references relating to the plurality of stored keys and/orbuttons on the peripheral device to which the plurality of assignedstored computer macros have been assigned in groups, wherein the groupsrelate to the layout of the plurality of the stored keys and/or buttonson the peripheral device as seen from a user's perspective.
 5. Themethod as claimed in claim 4, wherein the peripheral device is akeyboard and/or numeric keypad, wherein there are twelve assigned storedcomputer macro symbols and twelve references relating to the twelvestored keys on the keyboard and/or the numeric keypad to which thetwelve assigned stored computer macros, and wherein the twelve assignedstored computer macro symbols and twelve references are configured to bedisplayed on the OSD in three groups of four.
 6. The method as claimedin claim 5, wherein the OSD is configured to display a thirteenthcomputer macro symbol, wherein the thirteenth computer program symbolrelates to the detected computer program and/or the computer program towhich the computer macro displayed on the OSD is assigned to.
 7. Themethod as claimed in claim 3, wherein the peripheral device is akeyboard and/or numeric keypad, wherein there are four assigned storedcomputer macro symbols and four references relating to the four storedkeys on the keyboard and/or the numeric keypad to which the fourassigned stored computer macros, and wherein the four assigned storedcomputer macro symbols and four references are configured to bedisplayed on the OSD in one group of four.
 8. The method as claimed inclaim 7, wherein the OSD is configured to display a fifth computer macrosymbol, wherein the fifth computer program symbol relates to thedetected computer program and/or the computer program to which thecomputer macro displayed on the OSD is assigned to.
 9. The method asclaimed in claim 3, wherein there is a plurality of peripheral devicescomprising at least a keyboard and a numeric keypad, wherein there aresixteen assigned stored computer macro symbols and sixteen referencesrelating to the sixteen stored keys on the keyboard and/or the numerickeypad to which the sixteen assigned stored computer macros, and whereinthe sixteen assigned stored computer macro symbols and sixteenreferences are configured to be displayed on the OSD in four groups offour.
 10. The method as claimed in claim 1, wherein the assignedcomputer macro is unique to the detected computer program.
 11. Acomputer program, at least partially resident in a memory, comprising acomputer driver for creating a computer macro, wherein the computerproduct comprises instructions which, when the program is carried out bya computer, cause the computer to carry out: detecting a computerprogram; assigning a computer macro relating to the computer program toa key and/or button on a peripheral device; assigning a computer macrosymbol relating to the assigned computer macro; and displaying, on ascreen, an on screen display, OSD, configured to display the assignedcomputer macro symbol and a reference to the key and/or button on theperipheral device to which the assigned computer macro has beenassigned.
 12. The computer program as claimed in claim 11, furtherconfigured to display, on the screen, a configuration tool, wherein theconfiguration tool is configured to display the assigned computer macroand/or the assigned computer macro symbol, and the key and/or button onthe peripheral device to which the computer macro is assigned, whereinthe configuration tool is further configured to allow a user to alterthe assigned computer macro and/or the assigned computer macro symboland/or the key and/or button on the peripheral device to which thecomputer macro is assigned, and/or wherein the computer macro symbol isa symbol used in the detected computer program for the assigned computermacro; and/or wherein the computer driver is configured to detect thecomputer program by: detecting, by the computer driver, the executedcomputer program; detecting, by the computer driver, the computerprogram in focus; searching, by the computer driver, for a default/usermapping of the computer program in focus in a folder of the driver; ifthe computer program in focus comprises a plugin for exporting acomputer macro and a computer macro symbol relating to the computerprogram, executing, by the computer driver, the plugin and sending, bythe plugin, the computer macro and the computer macro symbol to thecomputer driver; creating, by the computer driver, at least twotemporary files containing the computer macro and the computer macrosymbol, wherein at least a first file comprises the computer macro andat least a second file comprises a reference to the computer macrosymbol; if a default/user mapping is found by the computer driver,searching, by the computer driver, for the at least two temporary files;and if the at least two temporary files are found, rendering, by asoftware component of the computer driver, the computer macro found inthe default/user mapping.
 13. A computer macro creation systemcomprising: a computer driver configured to carry out the method asclaimed in claim 1, and a peripheral device, wherein the peripheraldevice further comprises the processor, wherein the memory is configuredto store the computer driver, and wherein the processor is configured toexecute a driver instruction from the memory.
 14. A data processingsystem comprising means for carrying out the method of claim
 1. 15. Acomputer-readable storage medium comprising instructions which, whenexecuted by a computer, cause the computer to carry out the method ofclaim 1.